package demo;

import org.junit.Test;

import java.util.Arrays;
import java.util.List;
import java.util.Optional;

/**
 * @Author: WWQ
 * @Date: 2019/4/8 13:14
 * @Version 1.0
 */
public class StreamAPITest5 {
    /**
     * 终止操作：
     * <p>
     * allMatch（） ----检查是否匹配所有元素。
     * andMatch（）----检查是否至少匹配一个元素。
     * noneMatch（）----检查是否没有匹配所有元素。
     * findFirst（）----返回第一个元素。
     * findAnt（）----返回当前流中任意一个元素。
     * count（）---- 返回流中元素的个数。
     * max（）----返回流中的最大值。
     * min（）----返回流中的最小值
     */

    List<Employee> emps = Arrays.asList(
            new Employee("张三", 18, 9999.99, Employee.Status.VOCATION),
            new Employee("李四", 59, 6666.66, Employee.Status.BUS),
            new Employee("王五", 28, 3333.33, Employee.Status.FREE),
            new Employee("赵六", 8, 7777.77, Employee.Status.BUS),
            new Employee("田七", 38, 5555.55, Employee.Status.VOCATION)
    );

    /**
     * 匹配所有元素
     */
    @Test
    public void test1() {
        Boolean b1 = emps.stream().allMatch((e) -> e.getStatus().equals(Employee.Status.BUS));
        System.out.println(b1);
    }

    /**
     * 是否匹配某个元素
     */
    @Test
    public void test2(){
        Boolean b1=emps.stream().anyMatch((e)->e.getStatus().equals(Employee.Status.BUS));
        System.out.println(b1);
    }
    /**
     * 是否匹没有匹配所有元素
     */
    @Test
    public void test3(){
        Boolean b1=emps.stream().noneMatch((e)->e.getStatus().equals(Employee.Status.BUS));
        System.out.println(b1);
    }

    /**
     * 返回第一个元素
     */
    @Test
    public void test4(){
        /**
         * 为避免空指针的问题使用Optional封装
         */
        Optional<Employee> optional=emps.stream().findFirst();
        System.out.println(optional);
    }

    /**
     * 返回任意一个元素(一般返回第一个匹配条件的元素)
     */
    @Test
    public void test5(){
        /**
         * 为避免空指针的问题使用Optional封装
         */
        Optional<Employee> optional=emps.stream().findAny();
        System.out.println(optional);
    }

    /**
     * 返回元素的个数
     */
    @Test
    public void test6(){
        Long aLong=emps.stream().count();
        System.out.println(aLong);
    }

}
